Most computers have a layered bus architecture for supporting the various components that comprise or interface with the computer. For example, a personal computer typically includes a local bus for connecting high speed devices, such as a microprocessor and cache memory. Connected to the local bus through a bus interface is often one or more peripheral buses, for connecting disk drives and the like. In many instances, both internal and external peripheral buses, such as a small computer systems interface or a universal serial bus, exist in a variety of configurations.
One purpose of the peripheral buses is to provide ports for peripheral devices such as storage devices, modems, joy-sticks, keyboards, and pointer devices. A port represents a physical or electrical bus interface, such as a slot or a connector, but in a broad sense, can be considered part of the bus that it is interfacing. Therefore, the terms "bus" and "port" are, in many instances, interchangeable. Since the peripheral devices are selectively connected to ports (either directly or through another bus), the devices are often attached by users or computer assemblers with little or no knowledge as to the optimal placement of each device. As a result, problems sometime result from a less-than-optimum bus/port arrangement.
One problem stems from the rate at which data must be supplied to or from a device. For example, a floppy disk drive is a device that is used only sparingly and has a relatively low data rate, or bandwidth. A modem is a device that is used often and has a relatively moderate bandwidth. A digital camera is a device that is used sparingly and requires a relatively high bandwidth. Therefore, it is important to properly place each peripheral device on a peripheral bus to maximize the use and bandwidth requirements for each device.
The above-described problem is exacerbated by the increasing popularity of external peripheral buses such as a universal serial bus ("USB") or an IEEE 1394 serial bus ("1394 bus"). The USB is a two-wire serial personal computer bus, designed by a consortium of computer makers and suppliers, which can support many peripheral devices either in parallel or in a daisy chain configuration. The USB has a relatively high total bandwidth and uses inexpensive cable, which can be up to 5 meters long. The 1394 bus is a four-wire serial personal computer bus, very similar to the USB except with a higher bandwidth and can be up to 4.5 meters long. Specifications for the 1394 bus are available from the Institute of Electrical and Electronics Engineers, Inc. ("IEEE"), 345 East 47th Street, New York, N.Y. 10017-2394. For both the USB and the 1394 bus, when a device is connected to the bus, it provides information that identifies its type and in some cases, bandwidth requirements.
These external buses present a greater problem because of their universal use. Typically, these external buses are serial (instead of parallel), have ports on the outside of the computer, and can support very many devices. Furthermore, with the increasing popularity of plug and play devices, the arrangement of devices to a particular port of an external bus can change frequently.
For example, a computer may include four USB ports, the first two connected to a primary bus such as a peripheral component interconnect ("PCI") bus inside the computer through a first interface controller and the second two USB ports connected to the PCI bus through a second interface controller. A user of the system may connect a joystick to the first USB port, a digital camera to the third USB port, and a modem to the fourth USB port. In the present example, the joystick requires a relatively low asynchronous bandwidth to the PCI bus, the modem requires a relatively low-to-medium asynchronous bandwidth but frequent use, and the digital camera requires a relatively high isochronous (allocated) bandwidth. The first interface controller that supports the first USB can readily support the low bandwidth requirements of the joystick. However, the second interface controller struggles to support the high isochronous bandwidth requirements of the digital camera and the medium bandwidth requirement of the modem. Therefore, the second interface controller becomes a bottleneck for the digital camera and the modem.
The problem described above would not have occurred if the user had placed the two higher bandwidth devices (the digital camera and the modem) on USB ports connected to separate interface controllers. However, it is undesirable to require such sophisticated user interaction. Furthermore, since these are plug-and-play devices, constant changes to the arrangement of devices on the USB ports and varying use of application programs on the computer make it almost impossible for any sophisticated user to continually implement the optimum bus arrangement.
Therefore, what is needed is a system and method for automatically arranging the devices of one or more buses to balance the efficiency of each interface device supporting the buses. The efficiency should consider bus requirements for each device, such as bandwidth, frequency of use, isochronous vs. asynchronous, and so forth.